home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windows Game Programming for Dummies (2nd Edition)
/
WinGamProgFD.iso
/
mac
/
DirectX SDK
/
DXSDK
/
samples
/
Multimedia
/
Direct3D
/
BumpMapping
/
DotProduct3
/
readme.txt
< prev
next >
Wrap
Text File
|
2001-10-10
|
3KB
|
63 lines
//-----------------------------------------------------------------------------
// Name: DotProduct3 Direct3D Sample
//
// Copyright (c) 1998-2001 Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
Description
===========
The DotProduct3 samples demonstrates an alternative approach to Direct3D
bumpmapping. This technique is named after the mathematical operation which
combines a light vector with a surface normal. The normals for a surface are
traditional (x,y,z) vectors stored in RGBA format in a texture map (called a
normal map, for this technique).
Not all cards support DotProduct3 blending teture stages, but then not all
cards support Direct3D bumpmapping. Refer to the DirectX SDK documentation
for more information.
Path
====
Source: DXSDK\Samples\Multimedia\D3D\BumpMapping\DotProduct3
Executable: DXSDK\Samples\Multimedia\D3D\Bin
User's Guide
============
The following keys are implemented. The dropdown menus can be used for the
same controls.
<Enter> Starts and stops the scene
<Space> Advances the scene by a small increment
<F1> Shows help or available commands.
<F2> Prompts user to select a new rendering device or display mode
<Alt+Enter> Toggles between fullscreen and windowed modes
<Esc> Exits the app.
Programming Notes
=================
The lighting equation for simulating bump mapping invloves using the dot
product of the surface normal and the lighting vector. The lighting vector
is simply passed into the texture factor, and the normals are encoded in a
texture map. The blend stages, then, look like
SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_DOTPRODUCT3 );
SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_TFACTOR );
The only trick then, is getting the normals stored in the texture. To do
this, the components of a vector (XYZW) are each turned from a 32-bit
floating value into a signed 8-bit integer and packed into a texture color
(RGBA). The code show how to do this using a custom-generated normal map,
as well as one built from an actual bumpmapping texture image.
Note that not all cards support all features for all the various bumpmapping
techniques (some hardware has no, or limited, bumpmapping support). For more
information on bumpmapping, refer to the DirectX SDK documentation.
This sample makes use of common DirectX code (consisting of helper functions,
etc.) that is shared with other samples on the DirectX SDK. All common
headers and source code can be found in the following directory:
DXSDK\Samples\Multimedia\Common